package 数据结构和算法.剑指offer.树.对称的二叉树;

import 数据结构和算法.数据结构.普通二叉树.TreeNode;

/**
 * 对称的二叉树
 * <p>
 * 请实现一个函数，用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样，那么它是对称的
 * <p>
 * 本题同样可以使用递归来解决。
 */
public class Test {
    public static void main(String[] args) {

    }

    public static boolean isSymmetric(TreeNode root) {
        if (root == null) {
            return true;
        }

        return recur(root.getLeftTreeNode(), root.getRightTreeNode());
    }

    public static boolean recur(TreeNode Left, TreeNode Right) {
        if (null == Left && null == Right) {
            return true;
        }

        if (Left == null || Right == null || Left.getValue() != Right.getValue()) {
            return false;
        }

        return recur(Left.getLeftTreeNode(), Right.getRightTreeNode()) && recur(Left.getRightTreeNode(), Right.getLeftTreeNode());
    }
}
